home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / handson / supercede / Knowodys / Projects / Calendar / 1.0.2 / Calendar.java < prev    next >
Encoding:
Java Source  |  1997-07-31  |  2.9 KB  |  118 lines

  1. /*
  2.     Calendar applet prints the calendar for a month when given
  3.     two parameters: integer month (1 - 12) and integer year (eg. 1997).
  4. */
  5. import java.awt.Graphics;
  6.  
  7. public class Calendar extends java.applet.Applet {
  8.  
  9. // global variable declarations
  10.     int month, year;
  11.  
  12. // initialize variables
  13.     public void init() {
  14.  
  15.     // get parameters from HTML file
  16.         Integer i = new Integer(0);
  17.  
  18.         month = i.parseInt(getParameter("month"));
  19.         year = i.parseInt(getParameter("year"));
  20.  
  21.     }
  22.  
  23.     public void paint(Graphics g) {
  24.     // print the calendar
  25.  
  26.         // variable declarations
  27.         String [] daynames = {"Sun", "Mon","Tue", "Wed", "Thu", "Fri", "Sat"};
  28.         int daycolumn, row = 1, temp, day;
  29.  
  30.         // code to print greeting
  31.         g.drawString(" "+getMonthString(), 10,20);
  32.  
  33.         // compute start day of month using formula
  34.         temp = year % 100;
  35.         daycolumn = ((temp) + temp / 4 +
  36.             monthTable(month, year) + 1) % 7;
  37.  
  38.         if (daycolumn == 0)
  39.             daycolumn = 7;
  40.  
  41.         for (day = 1; day<=7; day++)
  42.             g.drawString(daynames[day-1],30+day*35,60);
  43.  
  44.         for (day = 1; day <= daysInMonth(month, year); day++){
  45.             g.drawString(" "+day,30+daycolumn++*35, 60+row*20);
  46.  
  47.             if (daycolumn == 8) {
  48.                 daycolumn = 1;
  49.                 row++;
  50.             }
  51.         }
  52.     }
  53.     int monthTable(int m, int y)
  54.     {
  55.  
  56.     // compute entry in table of months for current month, year
  57.  
  58.         int tom = -1;
  59.  
  60.         switch(m) {
  61.             case 4: case 7: tom = 0; break;
  62.             case 1: case 10: tom = 1; break;
  63.             case 5: tom = 2; break;
  64.             case 8: tom = 3; break;
  65.             case 2: case 3: case 11: tom = 4; break;
  66.             case 6: tom = 5; break;
  67.             case 9: case 12: tom = 6; break;
  68.         }
  69.         if ((m <3) && (y % 4 == 0)) {
  70.             tom --;
  71.         }
  72.         return tom;
  73.     }
  74.  
  75.     int daysInMonth(int m, int y)
  76.     {
  77.     // compute number of days in a month: don't forget leap year!
  78.         int days = -1;
  79.  
  80.         switch(m) {
  81.             case 1: case 3: case 5: case 7: case 8: case 10: case 12:
  82.                 days = 31; break;
  83.             case 2:
  84.                 if (y % 4 == 0)
  85.                     days = 29;
  86.                 else
  87.                     days = 28;
  88.                 break;
  89.             case 4: case 6: case 9: case 11: days = 30; break;
  90.         }
  91.         return days;
  92.     }
  93.  
  94.     String getMonthString()
  95.     {
  96.     // return string corresponding to month number
  97.  
  98.         String temp = "problem";
  99.  
  100.         switch(month) {
  101.             case 1: temp =  "January"; break;
  102.             case 2: temp =  "February"; break;
  103.             case 3: temp =  "March"; break;
  104.             case 4: temp =  "April"; break;
  105.             case 5: temp =  "May"; break;
  106.             case 6: temp =  "June"; break;
  107.             case 7: temp =  "July"; break;
  108.             case 8: temp =  "August"; break;
  109.             case 9: temp =  "September"; break;
  110.             case 10: temp =  "October"; break;
  111.             case 11: temp =  "November"; break;
  112.             case 12: temp =  "December"; break;
  113.         }
  114.         return temp;
  115.  
  116.     }
  117.  
  118. }